<?php
	class alteracoes
	{
		private $nivel;
		private $nome;
		private $matricula;
		private $senha;
		private $turma;
		private $id;
		private $responsavel;
		private $id_responsavel;
		
		//Construtor
		function __construct ($vnivel, $id, $nome, $senha, $matricula, $turma, $resp)
		{
			if ($vnivel == 1 || $vnivel == 2 || $vnivel == 3)
			{
				$this->nivel = $vnivel;
				$this->id = $id;
				$this->nome = $nome;
				$this->matricula = $matricula;
				$this->senha = $senha;
			}
			else if ($vnivel == 4)
			{
				$this->nivel = $vnivel;
				$this->id = $id;
				$this->nome = $nome;
				$this->senha = $senha;
			}
			else if ($vnivel == 5)
			{
				$this->nivel = $vnivel;
				$this->id = $id;
				$this->nome = $nome;
				$this->matricula = $matricula;
				$this->senha = $senha;
				$this->turma = $turma;
				$this->responsavel = $resp;
			}
		}
		
		//Verifica se as entradas são válidas
		function verificar ()
		{
			if ($this->nivel == 1)
			{
				$sql = "SELECT Matricula FROM master WHERE Matricula='$this->matricula' && id!='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
				$num = mysql_num_rows ($result);
				return $num;
			}
			else if ($this->nivel == 2)
			{
				$sql = "SELECT Matricula FROM administradores WHERE Matricula='$this->matricula' && id!='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
				$num = mysql_num_rows ($result);
				return $num;
			}
			else if ($this->nivel == 3)
			{
				$sql = "SELECT Matricula FROM professores WHERE Matricula='$this->matricula' && id!='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
				$num = mysql_num_rows ($result);
				return $num;
			}
			else if ($this->nivel == 4)
			{
				$sql = "SELECT Nome FROM responsaveis WHERE Nome='$this->nome' && id!='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
				$num = mysql_num_rows ($result);
				return $num;
			}
			else if ($this->nivel == 5)
			{
				$sql = "SELECT Matricula FROM alunos WHERE Matricula='$this->matricula' && id!='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
				$num = mysql_num_rows ($result);
				
				//A matrícula é repetida
				if ($num != 0)
				{
					return $num;
				}
				//A matricula não é repetida. Vamos verificar o responsável pelo aluno
				else
				{
					$sql1 = "SELECT Nome, id FROM responsaveis WHERE Nome='$this->responsavel'";
					$result1 = mysql_query ($sql1) or die ("A query falhou: ".mysql_error ());
					$num = mysql_num_rows ($result1);
					
					//O responsável ainda não existe
					if ($num == 0)
					{
						
						return -1;
					}
					//O responsável existe
					else
					{
						$responsavel=mysql_fetch_object ($result1);
						$this->id_responsavel = $responsavel->id;
						return 0;
					}
				}
					
				
			}
		}
		
		//Destrutor (executa a alteração)
		function __destruct ()
		{
			if ($this->nivel == 1)
			{
				$sql = "UPDATE master SET Nome='$this->nome', Matricula='$this->matricula', Senha='$this->senha' WHERE id='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
			}
			else if ($this->nivel == 2)
			{
				$sql = "UPDATE administradores SET Nome='$this->nome', Matricula='$this->matricula', Senha='$this->senha' WHERE id='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
			}
			else if ($this->nivel == 3)
			{
				$sql = "UPDATE professores SET Nome='$this->nome', Matricula='$this->matricula', Senha='$this->senha' WHERE id='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
			}
			else if ($this->nivel == 4)
			{
				$sql = "UPDATE responsaveis SET Nome='$this->nome', Senha='$this->senha' WHERE id='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
			}
			else if ($this->nivel == 5)
			{
				$sql = "UPDATE alunos SET Nome='$this->nome', Matricula='$this->matricula', Senha='$this->senha', Turma='$this->turma', id_responsavel='$this->id_responsavel' WHERE id='$this->id'";
				$result = mysql_query ($sql) or die ("A query falhou: ".mysql_error ());
			}
			
			//Limpando as variáveis
			unset($this->nome, $this->matricula, $this->nivel, $this->senha, $this->turma, $this->id, $this->responsavel);
			
			if ($result)
			{
				echo '<script type="text/javascript">
						alert("Dados alterados com Sucesso.");
					  </script>
					  <noscript>
					  	<div id="mensagem">
							<h3>Dados alterados com Sucesso.</h3>
						</div>
					  </noscript>';
			}
			else
			{
				echo '<script type="text/javascript">
						alert("Ocorreu um erro!");
					  </script>
					  <noscript>
					  	<div id="mensagem">
							<h3>Ocorreu um erro!</h3>
						</div>
					  </noscript>';
			}
			
		}
	}
	/*****************************************************
		          FIM DA DEFINIÇÃO DA CLASSE
	*****************************************************/
		
	if (isset ($_POST['vnivel'], $_POST['nome'], $_POST['senha'], $_POST['id']) && !empty ($_POST['vnivel']) && !empty ($_POST['nome']) && !empty ($_POST['senha'])&& !empty ($_POST['id']) && ($vnivel == 1 || $vnivel == 2 || $vnivel == 3 || $vnivel == 4 || $vnivel == 5))
	{
		$vnivel = $_POST['vnivel'];
		$nome = addslashes (strip_tags ($_POST['nome']));
		$senha = md5 ($_POST['senha']);
		$id = $_POST['id'];
		
		//Já que apenas os campos acima são comuns à todos os níveis de usuário, a possibilidade de termos os parâmetros abaixo vazios existe
		if (isset ($_POST['matricula']) && !empty ($_POST['matricula']))
		{
			$matricula = addslashes (strip_tags ($_POST['matricula']));
		}
		else
		{
			$matricula = NULL;
		}
		
		if (isset ($_POST['turma']) && !empty ($_POST['turma']))
		{
			$turma = $_POST['turma'];
		}
		else
		{
			$turma = NULL;
		}
		
		if (isset ($_POST['responsavel']) && !empty ($_POST['responsavel']))
		{
			$responsavel = $_POST['responsavel'];
		}
		else
		{
			$responsavel = NULL;
		}
		
		
		$alterar=new alteracoes ($vnivel, $id, $nome, $senha, $matricula, $turma, $responsavel);
		
		$ocorrencias = $alterar->verificar ();
		
		//Tentou-se cadastrar um novo valor que ainda não existe na tabela
		if ($ocorrencias == 0)
		{
			$alterar->__destruct();
			
			echo '<script type="text/javascript">
					window.location="index.php";
				  </script>
				  <noscript>
					<div id="mensagem">
						<a href="index.php">Concluir</a>;
					</div>
				  </noscript>';
		}
		//O novo responsável ainda não está cadastrado
		else if ($ocorrencias == -1)
		{
			echo '<script type="text/javascript">
					alert ("Esse responsável não está cadastrado. Cadastre-o e, depois, realize a alteração novamente. Nada foi alterado.");
					window.location="index.php?page=responsaveis/cadastro";
				  </script>
				  <noscript>
					<div id="mensagem">
						<h3>Esse responsável não está cadastrado. Cadastre-o e, depois, realize a alteração novamente. Nada foi alterado.</h3>
						<a href="index.php?page=responsaveis/cadastro">Concluir</a>;
					</div>
				  </noscript>';
		}
		//Tentou-se cadastrar um valor que já existe na tabela
		else
		{
			echo '<script type="text/javascript">
					alert ("A Matrícula já existe! (Se você tentou alterar um responsável, o novo nome é repetido). Nada foi alterado.");
					window.location="index.php";
				  </script>
				  <noscript>
					<div id="mensagem">
						<h3>A Matrícula já existe! (Se você tentou alterar um responsável, o novo nome é repetido). Nada foi alterado.</h3>
						<a href="index.php">Concluir</a>;
					</div>
				  </noscript>';
		}
	}
	else
	{
		echo '<script type="text/javascript">
				window.location="index.php";
			  </script>';
	}
	
?>